/*************************************************************************
> File Name: main.c
> Author: xueyu-jia
> Mail: 2657575910@qq.com
> Created Time: Sun 07 Apr 2024 12:09:17 PM PDT
 ************************************************************************/

#include<stdio.h>
#include<pthread.h>
#include<Python.h>


extern void* audio_process(void* unused);
extern void* image_process(void* unused);
extern void* server_process(void* unused);
extern void* voice_output(void* unused);
extern void* vidio_output(void* unused);
extern void* motion_output(void* unused);


#define THREAD_NUM_MAX 6
typedef void*(*)(void*) Thread_func;
pthread_mutex_t Image_Awaken=PTHREAD_MUTEX_INITIALIZER;//用于唤醒图像处理进程(目前只有语音处理模块使用)


int main(void){
	pthread_t tids[THREAD_NUM_MAX];
	Thread_func funcs[THREAD_NUM_MAX]={audio_process,vedio_process,server_process,voice_output,vidio_output,motion_output};

	int res=0;
	for(int i=0;i<THREAD_NUM_MAX;i++){
		res=pthread_create(&tids[i],NULL,funcs[i],NULL);
		if(res){
			Robot_log(ERR,"Can't Create thread %d,errcode %d",i,res);
			goto err;
		}
		res=pthread_detach(tids[i]);
		if(res){
			Robot_log(ERR,"Can't Detach thread %d,errcode %d",i,res);
			goto err;
		}
		pthread_exit((void*)0);
		//线程退出
	}
		
	Robot_log(INFO,"Sucess Create and Detach All threads\n");
err:
	return 0;
}


//语音处理线程
void* audio_process(void* unused){
	Py_Initialize();
	PyRun_SimpleString();
	Py_Finalize();
	return ;
}

//图像处理线程
void* image_process(void* unused){
	pthread_mutex_lock(&Image_Awaken);
	while(1){
		//执行图像处理的逻辑
				
		pthread_mutex_lock(&Image_Awaken);
	}	
}

//与服务器进行通信的线程
void* server_process(void* unused){
	//与服务器建立连接

	
	//阻塞读服务器消息(阻塞状态功耗会低一些,不使用的时候性能也会好一些)
	//如果需要主动和服务器通行直接给服务器发一个包,让服务器唤醒该线程用于通信即可
}


//音频输出线程
void* voice_output(void* unused){
	while(){

	}
}

//视频输出线程
void* vidio_output(void* unused){

}

//运动输出线程
void* motion_output(void* unused){

}
